const path = require('path')
const fs = require('fs')
const os =require('os')
const http = require('http')

//nodejs路径模块
let filePath = './static/login.html'
console.log(path.basename(filePath))//login.html 返回路径最后一部分
console.log(path.dirname(filePath))//./static	返回当前父级目录
console.log(path.extname(filePath))//.html	返回文件扩展名
const name = 'zqf'
console.log(path.join('/', 'users', name, 'notes.txt'))//\users\zqf\notes.txt
console.log(path.parse(filePath))
console.log(path.resolve(name, '/', 'yileng'))// 相当于cd到根目录下yileng目录


//nodejs操作系统模块
//console.log(os.cpus())//返回cpu信息
console.log(os.arch())//返回底层架构标识
console.log(os.platform())//系统平台
console.log(os.freemem())//空闲内存
//console.log(os.userInfo())//用户信息

//nodejs事件模块
const Events = require('events')
const emitter = new Events()
emitter.on('zqf', ()=>{
	console.log('通过emit触发的自定义事件')
})
emitter.emit('zqf')//zqf666
//常用API
/* emitter.emit()//触发事件
emitter.on()//监听事件
emitter.addListener()//监听事件
emitter.off()//移除监听
emitter.removeListener()//移除监听
emitter.removeAllListener()//移除所有监听
emitter.once()//触发一次监听的事件 */

//http请求模块-属性
console.log(http.METHODS)//所有支持的HTTP方法
console.log(http.STATUS_CODES)//所有状态码及其描述
console.log(http.globalAgent)//agent对象的全局实例

//http请求模块-方法
// http.createServer()//创建服务返回http.Server类的实例
// http.request()//发起http请求到服务器
// http.get()//类似http.request并设置请求方式get，自动调用req.end()

//http请求模块-类
/* http.Agent
http.ClientRequest
http.Server//http.createServer() 创建新的服务器时返回此类，close()停止服务 listen()启动并监听服务
http.ServerResponse
//由http.Server创建并作为第二个参数传给request事件
const server = http.createrServer((req, res) => {
	//res是一个http.ServerResponse对象，在事件处理函数中总是会调用end()关闭响应，消息完成发送到客户端
	res.end()
})
http.IncomingMessage */

//Nodejs Buffer
// Buffer是内存区域,表示在V8引擎外分配的固定大小的内存块.
// Buffer.from()
// Buffer.alloc()
// Buffer.allocUnsafe()
let buf = Buffer.from('zhangqianfeng')
console.log(buf[0])//122  访问buffer指定索引内容，返回unicode编码
console.log(buf.toString())//访问buffer全部内容


//Nodejs打印对象
const obj = {
	name: 'zqf',
	info: {
		age: 16,
		tets: 'zqf666'
	}
}
console.log(JSON.stringify(obj, null, 2))
require('util').inspect.defaultOptions.depth = null
console.log(obj)